kbhit関数は、標準入力ストリーム(stdin)を調べ、データの有無を調べます。
主にキーボードからの入力有無をチェックする場合に用いられます。
なお、本関数は、gcc環境では標準ではありません。
また、VisualStudio2005以降では、_kbhit関数を使用することを推奨されています。
#include <conio.h>
int kbhit(void);
戻り値として、
標準入力ストリームにデータがある(キーが押された)場合、0以外の値を返します。
データがない場合は、0を返します。
プログラム 例
#include <stdio.h>
#include >conio.h>
#define KEY_FUNC (0xe0)
#define KEY_UP (0x48)
#define KEY_DOWN (0x50)
#define KEY_RIGHT (0x4d)
#define KEY_LEFT (0x4b)
int main(void) {
int ch = ' ';
char *msg = NULL;
printf('好きなキーを押してくださいn');
ch = getch();
if(kbhit()) {
if (KEY_FUNC == ch) {
msg = 'その他の機能';
ch = getch();
switch (ch) {
case KEY_UP:
msg = 'UP';
break;
case KEY_DOWN:
msg = 'DOWN';
break;
case KEY_RIGHT:
msg = 'RIGHT';
break;
case KEY_LEFT:
msg = 'LEFT';
break;
default:
break;
}
}
printf('[%s]キーを押しましたねn', msg);
}
else {
printf('[%c]キーを押しましたねn', (char)ch);
}
return 0;
}
例の実行結果(右カーソルキーを押下した場合)
> kbhit.exe 好きなキーを押してください [RIGHT]キーを押しましたね
※Windows環境でのみ動作確認しております。LINUX環境などでは動作が異なる場合がありますので、その場合は環境に合わせてカスタマイズしてください。
Copyright © 2011 katsumi Handa All Rights Reserved.